package cn.kgm.jwt.properties;

import cn.kgm.core.constant.StrConstants;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import static cn.kgm.jwt.properties.JwtProperties.JWT_PREFIX;

/**
 * @Version 1.8
 * @AUTHOR: ruoyi
 * @Date: 2023-4-21 13:45
 * @Description: cn.kgm.jwt.properties.JwtProperties
 */
@Data
@Builder
@AllArgsConstructor
@ConfigurationProperties(prefix = JWT_PREFIX)
public class JwtProperties {


    public static final String JWT_PREFIX = StrConstants.CONFIG_PRIFIX + "jwt";

//    经典的双校验单例模式
//    private volatile static JwtProperties jwtProperties;
//    private JwtProperties() {}
//    public static JwtProperties getInstance(){
//        if (null == jwtProperties){
//            synchronized (JwtProperties.class){
//                if (null == jwtProperties){
//                    jwtProperties = new JwtProperties();
//                }
//            }
//        }
//        return jwtProperties;
//    }

    /**
     * 过期时间 2h
     * 单位：s
     */
    private Long expire = 7200L;

    /**
     * 刷新token的过期时间 8h
     * 单位：s
     */
    private Long refreshExpire = 28800L;

    /**
     * 设置解析token时，允许的误差
     * 单位：s
     * 使用场景：多台服务器集群部署时，服务器时间戳可能不一致
     */
    private Long allowedClockSkewSeconds = 60L;

}
